﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GN.Pay.Client.Notify
{
    /// <summary>
    /// 退款通知消息
    /// </summary>
    public class RefundNotifyMessage : NotifyMessage
    {
        /// <summary>
        /// 实例化
        /// </summary>
        /// <param name="notifyMessages">通知消息</param>
        /// <param name="payConfigure">支付配置</param>
        public RefundNotifyMessage(IDictionary<string, string>
            notifyMessages, IPayConfigure payConfigure)
            : base(notifyMessages, payConfigure)
        {

        }

        /// <summary>
        /// 是否成功
        /// </summary>
        public bool Success { get; set; }

        /// <summary>
        /// 状态消息
        /// </summary>
        public string StateMessage { get; set; }

        /// <summary>
        /// 退款交易号
        /// </summary>
        public string RefundTradeNo { get; set; }

        /// <summary>
        /// 申请时间
        /// </summary>
        public DateTime ApplyTime { get; set; }              

        /// <summary>
        /// 退款时间
        /// </summary>
        public DateTime RefundTime { get; set; }

        /// <summary>
        /// 账本时间
        /// </summary>
        public DateTime BookTime { get; set; }

        /// <summary>
        /// 申请批号
        /// </summary>
        public string ApplyNo { get; set; }

        /// <summary>
        /// 交易号
        /// </summary>
        public string TradeNo { get; set; }

        /// <summary>
        /// 订单号
        /// </summary>
        public string OrderNo { get; set; }

        /// <summary>
        /// 申请金额
        /// </summary>
        public decimal ApplyMoney { get; set; }

        /// <summary>
        /// 退款费用
        /// </summary>
        public decimal RefundFee { get; set; }

        /// <summary>
        /// 退款金额
        /// </summary>
        public decimal RefundMoney { get; set; }

        /// <summary>
        /// 原因
        /// </summary>
        public string Reason { get; set; }

        /// <summary>
        /// 扩展参数
        /// </summary>
        public string ExtraParam { get; set; }
    }
}
